#include "taskwidget.h"
#include <QScrollBar>

TaskWidget::TaskWidget(QWidget *parent)
    : Widget_Assist_Backdrop(parent) // 修改基类构造函数
{
    // 设置固定大小为450x213
    setFixedSize(450, 213);
    setupUI();

    // 添加几个示例任务
    addTask("完成报告");
    addTask("会议");
    addTask("阅读");
}

void TaskWidget::setupUI()
{
    // 设置主布局
    mainLayout = new QHBoxLayout(this);
    mainLayout->setSpacing(6); // 减少间距
    mainLayout->setContentsMargins(6, 6, 6, 6); // 减少边距

    // === 左侧任务区域 ===
    leftWidget = new QWidget(this);
    leftWidget->setMinimumWidth(220); // 调整宽度
    mainLeftLayout = new QVBoxLayout(leftWidget);
    mainLeftLayout->setSpacing(4); // 减少间距
    mainLeftLayout->setContentsMargins(4, 4, 4, 4); // 减少边距

    // 标题标签
    titleLabel = new QLabel("今日事务", leftWidget);
    titleLabel->setAlignment(Qt::AlignCenter);
    QFont titleFont = titleLabel->font();
    titleFont.setBold(true);
    titleFont.setPointSize(10); // 减小字体
    titleLabel->setFont(titleFont);
    titleLabel->setFixedHeight(16); // 固定高度
    mainLeftLayout->addWidget(titleLabel);

    // 任务滚动区域
    tasksScrollArea = new QScrollArea(leftWidget);
    tasksScrollArea->setWidgetResizable(true);
    tasksScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    tasksScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
    tasksScrollArea->setFixedHeight(160); // 固定高度
    tasksScrollArea->setStyleSheet("QScrollArea { border: none; background: transparent; }");
    tasksScrollArea->setFrameShape(QFrame::NoFrame);

    tasksContainer = new Widget_class(this);
    tasksLayout = new QVBoxLayout(tasksContainer);
    tasksLayout->setSpacing(4); // 减少间距
    tasksLayout->setContentsMargins(2, 2, 2, 2); // 减少边距
    tasksLayout->addStretch(); // 添加弹性空间使任务从顶部开始

    tasksScrollArea->setWidget(tasksContainer);
    mainLeftLayout->addWidget(tasksScrollArea);

    // === 右侧图片区域 ===
    imageLabel = new QLabel(this);
    imageLabel->setFixedSize(200, 160); // 固定大小
    imageLabel->setAlignment(Qt::AlignCenter);
    imageLabel->setStyleSheet("QLabel {"
                              "border: 1px dashed #cccccc;" // 减细边框
                              "border-radius: 3px;"
                              "background-color: #f9f9f9;"
                              "color: #666666;"
                              "font-size: 9px;" // 减小字体
                              "}");

    setImage(":/壁纸");
    // === 添加到主布局 ===
    mainLayout->addWidget(leftWidget, 1);    // 左侧占1份
    mainLayout->addWidget(imageLabel, 1);    // 右侧占1份
}

void TaskWidget::addTask(const QString &taskText)
{
    // 创建任务项的容器widget
    QWidget *taskItem = new QWidget(tasksContainer);
    taskItem->setFixedHeight(30); // 固定每个任务项的高度
    QHBoxLayout *itemLayout = new QHBoxLayout(taskItem);
    itemLayout->setContentsMargins(2, 2, 2, 2); // 减少边距
    itemLayout->setSpacing(4); // 减少间距

    // 复选框
    QCheckBox *checkBox = new QCheckBox(taskItem);
    checkBox->setFixedSize(16, 16); // 减小复选框大小
    checkBox->setStyleSheet("QCheckBox { border: none; background: transparent; }"
                           "QCheckBox::indicator { width: 16px; height: 16px; }");
    // 文本编辑框
    QTextEdit *textEdit = new QTextEdit(taskItem);
    textEdit->setFixedHeight(26); // 固定高度
    textEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // 关闭垂直滚动条
    textEdit->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // 关闭水平滚动条
    textEdit->setPlaceholderText("输入任务...");
    textEdit->setPlainText(taskText);
    textEdit->setStyleSheet("QTextEdit {"
                           "border: none;"
                           "background: transparent;"
                           "padding: 0px;"
                           "margin: 0px;"
                           "}");
    // 设置小字体
    QFont smallFont = textEdit->font();
    smallFont.setPointSize(8);
    textEdit->setFont(smallFont);

    // 连接信号
    connect(checkBox, &QCheckBox::stateChanged, this, &TaskWidget::onTaskStateChanged);

    // 添加到布局
    itemLayout->addWidget(checkBox);
    itemLayout->addWidget(textEdit, 1); // 文本编辑框占据剩余空间

    // 在弹性空间前插入新任务
    tasksLayout->insertWidget(tasksLayout->count() - 1, taskItem);
}

void TaskWidget::onTaskStateChanged(int state)
{
    QCheckBox *checkBox = qobject_cast<QCheckBox*>(sender());
    if (checkBox) {
        QWidget *taskItem = checkBox->parentWidget();
        if (taskItem) {
            // 找到对应的文本编辑框
            QTextEdit *textEdit = taskItem->findChild<QTextEdit*>();
            if (textEdit) {
                // 根据复选框状态设置文本格式
                QFont font = textEdit->font();
                font.setStrikeOut(state == Qt::Checked);
                textEdit->setFont(font);

                // 设置文本颜色
                QPalette palette = textEdit->palette();
                palette.setColor(QPalette::Text,
                               state == Qt::Checked ? Qt::gray : Qt::black);
                textEdit->setPalette(palette);
            }
        }
    }
}

void TaskWidget::setImage(const QString &imagePath)
{
    if (!imagePath.isEmpty()) {
        QPixmap pixmap(imagePath);
        if (!pixmap.isNull()) {
            // 缩放图片以适应标签大小
            pixmap = pixmap.scaled(imageLabel->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
            imageLabel->setPixmap(pixmap);
            imageLabel->setText("");
        } else {
            imageLabel->setText("图片加载失败");
        }
    } else {
        imageLabel->setText("图片区域\n(路径留空)");
        imageLabel->setPixmap(QPixmap());
    }
}

void TaskWidget::clearTasks()
{
    // 删除所有任务项（除了最后的弹性空间）
    while (tasksLayout->count() > 1) {
        QLayoutItem *item = tasksLayout->takeAt(0);
        if (item->widget()) {
            item->widget()->deleteLater();
        }
        delete item;
    }
}
